<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>运行时配置</title>
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-base.css" />
<link media="all" rel="stylesheet" type="text/css" href="styles/03e73060321a0a848018724a6c83de7f-theme-medium.css" />

 </head>
 <body class="docs"><div class="navbar navbar-fixed-top">
  <div class="navbar-inner clearfix">
    <ul class="nav" style="width: 100%">
      <li style="float: left;"><a href="seaslog.installation.html">« 安装</a></li>
      <li style="float: right;"><a href="seaslog.resources.html">资源类型 »</a></li>
    </ul>
  </div>
</div>
<div id="breadcrumbs" class="clearfix">
  <ul class="breadcrumbs-container">
    <li><a href="index.html">PHP Manual</a></li>
    <li><a href="seaslog.setup.html">安装/配置</a></li>
    <li>运行时配置</li>
  </ul>
</div>
<div id="layout">
  <div id="layout-content"><div id="seaslog.configuration" class="section">
 <h2 class="title">运行时配置</h2>
 <p class="simpara">
这些函数的行为受 <var class="filename">php.ini</var> 中的设置影响。
</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>Seaslog 配置选项</strong></caption>
   
    <thead>
     <tr>
      <th>名字</th>
      <th>默认</th>
      <th>可修改范围</th>
      <th>更新日志</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.appender" class="link">seaslog.appender</a></td>
      <td>1</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.appender-retry" class="link">seaslog.appender_retry</a></td>
      <td>0</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.level" class="link">seaslog.level</a></td>
      <td>8</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.remote-host" class="link">seaslog.remote_host</a></td>
      <td>127.0.0.1</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.remote-port" class="link">seaslog.remote_port</a></td>
      <td>514</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.remote-timeout" class="link">seaslog.remote_timeout</a></td>
      <td>1</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>
        
     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.default-basepath" class="link">seaslog.default_basepath</a></td>
      <td>/var/log/www</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.default-logger" class="link">seaslog.default_logger</a></td>
      <td>default</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.default-template" class="link">seaslog.default_template</a></td>
      <td>%T | %L | %P | %Q | %t | %M</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.default-datetime-format" class="link">seaslog.default_datetime_format</a></td>
      <td>Y-m-d H:i:s</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.trace-error" class="link">seaslog.trace_error</a></td>
      <td>1</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.trace-exception" class="link">seaslog.trace_exception</a></td>
      <td>0</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.trace-notice" class="link">seaslog.trace_notice</a></td>
      <td>0</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.trace-warning" class="link">seaslog.trace_warning</a></td>
      <td>0</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.use-buffer" class="link">seaslog.use_buffer</a></td>
      <td>0</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.buffer-size" class="link">seaslog.buffer_size</a></td>
      <td>0</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.buffer-disabled-in-cli" class="link">seaslog.buffer_disabled_in_cli</a></td>
      <td>0</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.disting-type" class="link">seaslog.disting_type</a></td>
      <td>0</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.disting-folder" class="link">seaslog.disting_folder</a></td>
      <td>1</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.disting-by-hour" class="link">seaslog.disting_by_hour</a></td>
      <td>0</td>
      <td>PHP_INI_SYSTEM</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.recall-depth" class="link">seaslog.recall_depth</a></td>
      <td>0</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.trim-wrap" class="link">seaslog.trim_wrap</a></td>
      <td>0</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.ignore-warning" class="link">seaslog.ignore_warning</a></td>
      <td>1</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

     <tr>
      <td><a href="seaslog.configuration.html#ini.seaslog.throw-exception" class="link">seaslog.throw_exception</a></td>
      <td>1</td>
      <td>PHP_INI_ALL</td>
      <td></td>
     </tr>

    </tbody>
   
  </table>

 </p>

 <p class="para">这是配置指令的简短说明。</p>

 <p class="para">
  <dl>
   
     <dt id="ini.seaslog.appender">
      <code class="parameter">seaslog.appender</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       日志存储介质的切换选型。1File 2TCP 3UDP (默认为1)
      </p>
      <p class="para">
       当 <em class="emphasis">seaslog.appender</em> 被切换至 `2 (TCP)` 或者 `3 (UDP)` 时， 
       SeasLog 会将日志发送至 tcp://remote_host:remote_port 或者 udp://remote_host:remote_port 服务器。
      </p>
      <p class="para">
        当 <em class="emphasis">SeasLog</em> 将日志发往 TCP/UDP 时，格式遵守 RFC5424 规范。
        此时 `{logInfo}` 受配置项中 <em class="emphasis">seaslog.default_template</em> 的影响。
      </p>
      <div class="example-contents screen">
    <div class="cdata"><pre>
The log style finally formatted such as:
&lt;15&gt;1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | DEBUG | 21423 | 599157af4e937 | 1466787583.322 | this is a neeke debug
&lt;14&gt;1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | INFO | 21423 | 599157af4e937 | 1466787583.323 | this is a info log
&lt;13&gt;1 2017-08-27T01:24:59+08:00 vagrant-ubuntu-trusty test/logger[27171]: 2016-06-25 00:59:43 | NOTICE | 21423 | 599157af4e937 | 1466787583.324 | this is a notice log
    </pre></div>
      </div>
     </dd>

    
    
     <dt id="ini.seaslog.appender-retry">
      <code class="parameter">seaslog.appender_retry</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       记录日志时的重试次数。
       默认为 0 (不重试)
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.buffer-disabled-in-cli">
      <code class="parameter">seaslog.buffer_disabled_in_cli</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       在 CLI 模式下是否关闭 Buffer 的选项。 1-Y 0-N(默认值)
      </p>
      <p class="para">
       在配置中留有 buffer_disabled_in_cli 的开关项。 
       默认情况下，这个选项是关闭的。 
       如果将 buffer_disabled_in_cli 设为开启，并且运行在 CLI 时， 
       配置中的 seaslog.use_buffer 设置将是被忽略的，此时 Seaslog 将立即把日志信息写往存储介质。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.buffer-size">
      <code class="parameter">seaslog.buffer_size</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       可以通过该配置项将内存中 Buffer 的条数修改为 100 条。 
       配置项中 buffer_size 默认值为 0， 这意味着将不使用 Buffer。 
       如果 buffer_size &gt; 0，SeasLog 将预先将日志写入内存 Buffer，并在 Buffer 的条数大于或等于该值时，写往存储介质，然后刷新内存中的 Buffer。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.default-basepath">
      <code class="parameter">seaslog.default_basepath</code>
      <span class="type">string</span>
     </dt>

     <dd>

      <p class="para">
       日志存储的默认根路径。默认值为 &quot;/var/log/www&quot;。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.default-datetime-format">
      <code class="parameter">seaslog.default_datetime_format</code>
      <span class="type">string</span>
     </dt>

     <dd>

      <p class="para">
       时间的格式。默认值为 &quot;Y-m-d H:i:s&quot;。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.default-logger">
      <code class="parameter">seaslog.default_logger</code>
      <span class="type">string</span>
     </dt>

     <dd>

      <p class="para">
       日志记录的默认 Logger。默认值为 &quot;default&quot;。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.disting-by-hour">
      <code class="parameter">seaslog.disting_by_hour</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       是否按每小时一个记录进行区分。1-Y 0-N(默认值)
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         当 <em class="emphasis">seaslog.disting_by_hour = 1</em> 时，会将日志区分小时记录。
         这意味着，SeasLog 将每隔一个小时创建一个文件。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.disting-folder">
      <code class="parameter">seaslog.disting_folder</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       是否按目录进行区分。1-Y(默认值) 0-N
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         当 <em class="emphasis">seaslog.disting_folder = 1</em> 时，按目录区分地使用 Logger。
         这意味着，SeasLog 将为每一个 Logger 创建一个单独的目录进行区分，比如 default/20180211.log，
         而当该选项关闭时，SeasLog 将使用下划线连接 Logger 与时间，比如 default_20180211.log。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.disting-type">
      <code class="parameter">seaslog.disting_type</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       是否按日志级别进行区分。1-Y 0-N(默认值)
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         当 <em class="emphasis">seaslog.disting_type = 1</em> 时，按日志级别使用 Logger。
         这意味着，SeasLog 将在创建日志文件时，使用 info/warn/error 或其他级别进行区分。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.ignore-warning">
      <code class="parameter">seaslog.ignore_warning</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       是否忽略 SeasLog 警告。1-On(默认值) 0-Off
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         当 <em class="emphasis">seaslog.ignore_warning = 1</em> 时，忽略 SeasLog 自身的警告，
         此时日志目录权限不足、或从远端 Server 端口不能正常响应等导致的警告，将被忽略；
         而当关闭该选项时，警告将会出现。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.level">
      <code class="parameter">seaslog.level</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       允许日志被记录的级别。默认为 8 (全部日志)。
       0-EMERGENCY 1-ALERT 2-CRITICAL 3-ERROR 4-WARNING 5-NOTICE 6-INFO 7-DEBUG 8-ALL
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
          提示: 该配置项从 1.7.0 版本开始有所改变。
          在 1.7.0 之前的版本中，越小的值将代表越多的级别日志被记录下来： 
          0-all 1-debug 2-info 3-notice 4-warning 5-error 6-critical 7-alert 8-emergency
          在 1.7.0 之前的版本中，默认值是 0 (全部日志)。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.recall-depth">
      <code class="parameter">seaslog.recall_depth</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       日志函数所在的层级。这将影响预置变量中的行号取值 `%F`。
       默认值为 0。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.remote-host">
      <code class="parameter">seaslog.remote_host</code>
      <span class="type">string</span>
     </dt>

     <dd>

      <p class="para">
       如果要使用 TCP 或者 UDP 为存储介质，需要配置远端的 IP。默认值为 &quot;127.0.0.1&quot;
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.remote-port">
      <code class="parameter">seaslog.remote_port</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       如果要使用 TCP 或者 UDP 为存储介质，需要配置远端服务的端口号。默认值为 514
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.remote-timeout">
      <code class="parameter">seaslog.remote_timeout</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       如果要使用 TCP 或者 UDP 为存储介质，需要配置超时时间。默认值为 1 秒。
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.throw-exception">
      <code class="parameter">seaslog.throw_exception</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       是否接受 SeasLog 抛出异常。1-On(默认值) 0-Off
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         当<em class="emphasis">seaslog.throw_exception = 1</em>时，接受 SeasLog 抛出自身的异常，
         此时由于日志目录权限问题、或者从远端 Server 端口不能正常响应而导致的中断，
         将抛出一个异常；而当关闭该选项时，将不抛出异常。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.trace-error">
      <code class="parameter">seaslog.trace_error</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       自动将 PHP 的 Final Error 记录在默认 Logger中。1-Y(默认值) 0-N
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.trace-exception">
      <code class="parameter">seaslog.trace_exception</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       自动将 PHP 的异常记录在默认 Logger中。1-Y 0-N(默认值)
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.trace-notice">
      <code class="parameter">seaslog.trace_notice</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       自动将 PHP 的 Notice 记录在默认 Logger中。1-Y 0-N(默认值)
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.trace-warning">
      <code class="parameter">seaslog.trace_warning</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       自动将 PHP 的 Warning 记录在默认 Logger中。1-Y 0-N(默认值)
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.trim-wrap">
      <code class="parameter">seaslog.trim_wrap</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       自动地 Trim 掉日志信息中的 \n 和 \r。1-On 0-Off(默认值)
      </p>
     </dd>

    
    
     <dt id="ini.seaslog.use-buffer">
      <code class="parameter">seaslog.use_buffer</code>
      <span class="type">integer</span>
     </dt>

     <dd>

      <p class="para">
       开启使用内存中的日志 Buffer。1-Y 0-N(默认值)
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         当<em class="emphasis">seaslog.use_buffer = 1</em>时，开启使用内存 Buffer。
         默认情况下，内存 Buffer 是关闭的。
         如果 Buffer 是开启状态，SeasLog 会将日志预先记录在内存中，
         并且在请求结束时、或 PHP 进程结束时（PHP RSHUTGOWN 或 PHP MSHUTDOWN）时写往存储介质。
        </p>
      </p></blockquote>
     </dd>

    
    
     <dt id="ini.seaslog.default-template">
      <code class="parameter">seaslog.default_template</code>
      <span class="type">string</span>
     </dt>

     <dd>

      <p class="para">
       默认日志模板。 
       默认值是 &quot;%T | %L | %P | %Q | %t | %M&quot;.
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
        <p class="para">
         SeasLog 提供了一系列的默认变量，可以在日志模板中使用，并在最终日志生成时，这些变量的占位符会被替换成对应的值。
        </p>
        <p class="para">
         默认的日志模板是：`seaslog.default_template = &quot;%T | %L | %P | %Q | %t | %M&quot;`，
         这意味着，默认的日志格式会是：`{dateTime} | {level} | {pid} | {uniqid} | {timeStamp} | {logInfo}`
        </p>
        <p class="para">
         如果修改了日志模板，比如：`seaslog.default_template = &quot;[%T]:%L %P %Q %t %M&quot; `，
         这意味着，日志的格式将会成改变为：`[{dateTime}]:{level} {pid} {uniqid} {timeStamp} {logInfo}`
        </p>
        <table class="doctable table">
          <caption><strong>Seaslog 内置变量表</strong></caption>
          
            <thead>
              <tr>
                <th>变量名</th>
                <th>描述</th>
              </tr>

            </thead>

            <tbody class="tbody">
              <tr>
                <td>%L</td>
                <td>日志级别。</td>
              </tr>

              <tr>
                <td>%M</td>
                <td>日志信息。</td>
              </tr>

              <tr>
                <td>%T</td>
                <td>时间。 比如：`2017-08-16 19:15:02`，受配置项 `seaslog.default_datetime_format` 的影响。</td>
              </tr>

              <tr>
                <td>%t</td>
                <td>时间戳。比如：`1502882102.862`，精确到毫秒。</td>
              </tr>

              <tr>
                <td>%Q</td>
                <td>
                 请求ID。用于区分每一个请求， 
                 如果没有调用 `SeasLog::setRequestId($string)` 函数，
                 将在请求初始化的时候，使用 PHP 内置函数 `static char *get_uniqid ()` 来生成 Unique ID。
               </td>
              </tr>

              <tr>
                <td>%H</td>
                <td>主机名。</td>
              </tr>

              <tr>
                <td>%P</td>
                <td>进程ID。</td>
              </tr>

              <tr>
                <td>%D</td>
                <td>域名:端口号。比如：`www.cloudwise.com:80`；在 CLI 下运行时，该值为 `cli`。</td>
              </tr>

              <tr>
                <td>%R</td>
                <td>
                 请求 URI。比如：`/app/user/signin`。
                 在 CLI 下运行时，值为 Index Script 名称，比如：`CliIndex.php`。
               </td>
              </tr>

              <tr>
                <td>%m</td>
                <td>
                 请求 Method。比如：`Get`。
                 在 CLI 下运行时，值为 Command Script，比如：`/bin/bash`。
               </td>
              </tr>

              <tr>
                <td>%I</td>
                <td>
                 客户端IP；在 CLI 下运行时，值为`local`。
                 取值优先级为：HTTP_X_REAL_IP &gt; HTTP_X_FORWARDED_FOR &gt; REMOTE_ADDR
               </td>
              </tr>

              <tr>
                <td>%F</td>
                <td>
                 文件名:行号。比如：`UserService.php:118`。
                </td>
              </tr>

              <tr>
                <td>%U</td>
                <td>
                 内存使用量。单位为 byte。
                 调用 PHP 内置方法`zend_memory_usage`得到该值。
                </td>
              </tr>

              <tr>
                <td>%u</td>
                <td>
                 最大内存使用峰值。单位为 byte。
                 调用 PHP 内置方法`zend_memory_peak_usage`得到该值。
                </td>
              </tr>

              <tr>
                <td>%C</td>
                <td>
                 `TODO` Class::Action. Such as `UserService::getUserInfo`
                </td>
              </tr>

            </tbody>
            
        </table>

      </p></blockquote>
     </dd>

    
  </dl>

 </p>
</div></div></div></body></html>